iT邦幫忙

2023 iThome 鐵人賽

DAY 18
1
自我挑戰組

Spring、Spirng MVC 及 Spring Boot 自主學習旅途!系列 第 18

Day 18 : @Service 服務生:請問你需要什麼服務嗎?

  • 分享至 

  • xImage
  •  

@Service

我們了解了Spring MVC的組成後,讓我們再回到Spring框架中,@Service 是一種用於定義服務層組件的註解,也可以稱作業務邏輯層。它是Spring的一個組件掃描註解,會告訴Spring並把被標記的類別識別為服務層組件將其管理為Spring的Bean。服務層通常用於業務邏輯的處理,例如數據的處理、計算、驗證等。

  1. 首先,確認我們的餐廳類別:
public class Restaurant {
    private String chef;
    private String food;

    public Restaurant(String chef, String food) {
        this.chef = chef;
        this.food = food;
    }

    public String getChef() {
        return chef;
    }

    public String getFood() {
        return food;
    }
}
  1. @Service註解標示廚房這個類別來處理業務邏輯的方法:
package com.example.spring.service;

import org.springframework.stereotype.Service;

@Service
public class Kitchen {

    // 服務層業務邏輯程式碼
		public String cook(Restaurant restaurant){
				String dish = restaurant.getChef + "cooks" + restaurant.getFood;
				return dish;
		}
}
  1. 最後回到我們的,Controller 最後回到我們的,Controller 使用@Autowired註解來自動裝配Kitchen 物件。
package com.example.spring.controller;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.ModelAndView;

@Controller
public class HelloController {
		
		// 依賴注入 Kitchen 服務層
		@Autowire
		private Kitchen kitchen;

    @RequestMapping("/hello") 
    public ModelAndView helloWorld() {

        ModelAndView modelAndView = new ModelAndView("helloView");

				// 建立一個 Restaurant 物件
        Restaurant restaurant = new Restaurant("John", "Fish");

				// 將 Restaurant 物件讓廚房的方法處理
				String dish = kitchen.cook(restaurant);

				// 將回傳 dish 加到模型中
				modelAndView.addAttribute("dish", dish);

				// 回傳 ModelAndView 物件
        return modelAndView; 
    }
}

@Service註解的主要目的是將服務層的類納入Spring容器的管理中,以便可以進行依賴注入、AOP(面向切面編程)等Spring特性的使用。這有助於實現鬆耦合的應用程式架構,提高了程式碼的可維護性和可測試性。

參考資料

https://www.baeldung.com/spring-component-repository-service
https://www.tutorialspoint.com/spring_boot/spring_boot_service_components.htm


上一篇
Day 17 : MVC 的 M,功能分割
下一篇
Day 19 : @Autowired 自動注入!
系列文
Spring、Spirng MVC 及 Spring Boot 自主學習旅途!30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言